Ciencia de Datos para Economistas

Clase 26- rowwise

Autor/a
Afiliación

MSc. José M. Avendaño

Universidad Central de Venezuela- Escuela de Economía. 2024-2025

Fecha de publicación

17 de febrero de 2025

Objetivo

  • Conocer cómo realizar operaciones fila a fila al mismo tiempo.

  • Realizar conexiones de lectura y escritura a bases de datos.

Ciclo 1

rowwise

Ciclo 2

DB´s

Cuando usar rowwise()

  • Operaciones complejas por fila: realizar cálculos o transformaciones específicas para cada fila, como aplicar una función personalizada o acceder a múltiples columnas dentro de la misma fila.

  • Funciones que dependen de múltiples columnas: Si la operación requiere información de varias columnas en la misma fila.

rowwise - ejemplo 1

Ejemplo 1: Calcular el promedio de una columna basado en otro valor de la misma fila

library(dplyr)

df_1 <- data.frame(
  x = c(1, 2, 3),
  y = c(4, 5, 6))


df_1 %>% 
  mutate(promedio_xy = mean(c(x, y)))
  x y promedio_xy
1 1 4         3.5
2 2 5         3.5
3 3 6         3.5

rowwise - ejemplo 1 -cont.

df_1 %>% 
  rowwise() %>% 
  mutate(promedio_xy = mean(c(x, y)))
# A tibble: 3 × 3
# Rowwise: 
      x     y promedio_xy
  <dbl> <dbl>       <dbl>
1     1     4         2.5
2     2     5         3.5
3     3     6         4.5

rowwise - ejemplo 2

Ejemplo 2: calcular ratio por fila

# Crear un tibble
datos <- tribble(
  ~id, ~valor1, ~valor2,
  "A", 10, 5,
  "B", 40, 3,
  "C", 9, 7
)

datos
# A tibble: 3 × 3
  id    valor1 valor2
  <chr>  <dbl>  <dbl>
1 A         10      5
2 B         40      3
3 C          9      7

rowwise - ejemplo 2- cont.

# Crear una función 
mi_funcion <- function(x, y) {
  sum(x, y)*mean(c(x,y))
}
mi_funcion(5,3)
[1] 32

rowwise - ejemplo 2- cont.

# Sin rowwise aplicar la función personalizada
datos %>%
  mutate(resultado = mi_funcion(valor1, valor2))
# A tibble: 3 × 4
  id    valor1 valor2 resultado
  <chr>  <dbl>  <dbl>     <dbl>
1 A         10      5      913.
2 B         40      3      913.
3 C          9      7      913.

rowwise - ejemplo 2- cont.

# Usar rowwise para aplicar la función
datos %>%
  rowwise() %>%
  mutate(resultado = mi_funcion(valor1, valor2))
# A tibble: 3 × 4
# Rowwise: 
  id    valor1 valor2 resultado
  <chr>  <dbl>  <dbl>     <dbl>
1 A         10      5      112.
2 B         40      3      924.
3 C          9      7      128 

Cuando no usar rowwise()

  • Operaciones vectorizadas: Si la operación se puede realizar de manera más eficiente usando funciones vectorizadas de dplyr o base R, ya que estas son generalmente más rápidas y sencillas.